﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Aeroporto.modelo;
using Aeroporto.bd;
using System.Data;
using System.Collections;
using System.Windows.Forms;

namespace Aeroporto.controle
{
    class AeronaveControl
    {
        private AeronaveDAO bd_aeronave = new AeronaveDAO();

        public DataTable lista_dados(string tabela)
        {
            DataTable datatable = new DataTable();

            try
            {
                datatable = bd_aeronave.lista_dados(tabela);
            }
            catch (Exception e)
            {
                Arquivo.escrever(e.ToString());
            }
            return datatable;
        }


        public DataTable pesquisar_modelo(string modelo)
        {
            DataTable datatable = new DataTable();

            try
            {
                datatable = bd_aeronave.pesquisar("aeronave", "modelo", modelo);
            }
            catch (Exception e)
            {
                Arquivo.escrever(e.ToString());
            }
            return datatable;
        }

        public DataTable pesquisar_codigo(string codigo)
        {
            DataTable datatable = new DataTable();

            try
            {
                datatable = bd_aeronave.pesquisar("aeronave", "cod_aeronave", codigo);
            }
            catch (Exception e)
            {
                Arquivo.escrever(e.ToString());
            }
            return datatable;
        }

        public String valida_substituta(string substituta)
        {
            if (bd_aeronave.existe_registro("aeronave", "cod_aeronave", substituta) == true)
            {
                return substituta;
            }
            else
            {
                return null;
            } 
			
        }
    
        public MyMessageBox valida_aeronave(string cod_aeronave, string fabricante, string modelo, string substituta)
        {
            if (cod_aeronave == "" || fabricante == "" || modelo == "")
            {
                return new MyMessageBox("Preencha os campos!", "Campo em branco");
            }
            else
            {
                if (bd_aeronave.existe_registro("aeronave", "cod_aeronave", cod_aeronave) == true)
                {
                    return new MyMessageBox("Registro já existe!", "Aeronave ja cadastrada");
                }
                else
                {
                    return null;
                }
            }
        }


        public MyMessageBox valida_insert_aeronave(string te_cod_aeronave, string te_fabricante, string te_modelo, string te_substituta)
        {
            
            MyMessageBox mb = valida_aeronave(te_cod_aeronave, te_fabricante, te_modelo, te_substituta);
           
            if (mb != null)
            {
                return mb;
            }
            else
            {
                string cod_aeronave = te_cod_aeronave;
                string fabricante = te_fabricante;
                string modelo = te_modelo;
                string substituta = te_substituta;

                
                IGenericModel generic_model = new AeronaveModel(cod_aeronave, fabricante, modelo, substituta);

                if (bd_aeronave.gravar_dados(generic_model))
                {
                    mb = new MyMessageBox("Aeronave Cadastrada!", "Cadastrado");

                }
                else
                {
                    mb = new MyMessageBox("Erro no cadastro!", "Erro");
                }
                return mb;
            }
        }


        public MyMessageBox exclui_aeroporto(ArrayList cod_aeronaves)
        {
            return bd_aeronave.excluir("aeronave", "cod_aeronave", cod_aeronaves);
        }


        public MyMessageBox valida_update_aeronave(string te_cod_aeronave, string te_fabricante, string te_modelo, string te_substituta, string te_cod_aeronave_antigo)
        {
            if(te_substituta == ""){
                te_substituta = "0000";
            }

            if (te_cod_aeronave == "" || te_fabricante == "" || te_modelo == "")
            {
                return new MyMessageBox("Preencha os campos", "Campo em branco");
            }
            else
            {
                if (te_cod_aeronave_antigo != te_cod_aeronave)
                {
                    return new MyMessageBox("O codigo não pode ser alterado", "Aeronave");
                }
                if(bd_aeronave.existe_registro("aeronave","cod_aeronave",te_substituta)==false){
                    return new MyMessageBox("Codigo substituta invalido", "Substituta");
                }
                else
                {
                    AeronaveModel aeronave = new AeronaveModel(te_cod_aeronave, te_fabricante, te_modelo, te_substituta);

                    if (bd_aeronave.update_dados(aeronave))
                    {
                        return new MyMessageBox("Aeronave Atualizada!", "Aeronave");
                    }
                    else
                    {
                        return new MyMessageBox("Erro ao atualizar", "Erro");
                    }
                }
            }
        }
    }
}
